package com.amado.course39match;

import java.math.BigDecimal;

/**
 * 用于操作浮点型数据，加减乘除幂
 * Created by Administrator on 2018/8/4.
 */
public class BigDecimalTest {
    public static void main(String[] args) {
        //使用float计算精度会丢失
        System.out.println(0.05 + 0.01);
        System.out.println(1.0 - 0.42);
        System.out.println(4.015 * 100);
        System.out.println(123.3 / 100);

        BigDecimal bigDecimal = new BigDecimal(0.05);
        bigDecimal = bigDecimal.add(new BigDecimal(0.01));
        System.out.println(bigDecimal.floatValue());
        testToString();

        System.out.println(new BigDecimal("0").equals(new BigDecimal("0")));
        System.out.println(new BigDecimal("0").equals(new BigDecimal("0.0")));
    }

    private static void testToString() {
        BigDecimal bigDecimal = new BigDecimal("1E11");
        System.out.println("stripTrailingZeros =" + bigDecimal.stripTrailingZeros());
        //toPlainString：不使用任何指数
        System.out.println("toPlainString() = " + bigDecimal.toPlainString());
        //toEngineeringString：有必要时使用工程计数法。工程记数法是一种工程计算中经常使用的记录数字的方法，与科学技术法类似，但要求10的幂必须是3的倍数
        System.out.println("toEngineeringString = " + bigDecimal.toEngineeringString());
        //toString：有必要时使用科学计数法
        System.out.println("toString = " + bigDecimal.toString());

        System.out.println("pow = " +new BigDecimal(10).pow(4));

    }
}
